Ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Автоматики і телемеханіки

Інформація про роботу

Рік:
2005
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Алгоритмічні основи криптології
Група:
ІБ – 41

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НУ”ЛЬВІВСЬКА ПОЛІТЕХНІКА” КАФЕДРА АВТОМАТИКИ І ТЕЛЕМЕХАНІКИ ЗВІТ про виконання лабораторної роботи№2 з дисципліни „Алгоритмічні основи криптології” на тему: “Ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь ” Мета роботи: вивчити найпоширеніші ітераційні методи розв’язку систем лінійних алгебраїчних рівнянь, навчитись розв’язувати на ЕОМ системи алгебраїчних рівнянь, провести порівняльний аналіз розглянутих методів. Завдання: написати програму на мові програмування Сі яка б розв’язувала систему лінійних алгебраїчних рівнянь методом Зейделя. 24,21+s 2,42 3,85 2,31 31,49 1,52 3,49 4,84 28,72+s 30,24 40,95-r 42,81 де s = 0.2*k , r = 0.2*p k=0, p=0. Блок-схема алгоритму.   Повний текст програми. #include<stdio.h> #include<math.h> #include<conio.h> #define n 3 #define e 0.000001 main() { float a[n+1][n+1],b[n+1],l[n+1][n+2],t[n+1],x[n+1][50]; float s=0,x1[n+1]; int i,j,k,p,h; for (i=1;i<=n;i++) for (j=1;j<=n;j++) scanf("%f",&a[i][j]); for (i=1;i<=n;i++) scanf("%f",&b[i]); for (i=1;i<=n;i++) { h=1; for (j=1;j<=n;j++) {if (i==j) continue; l[i][h]=(-a[i][j])/a[i][i]; h++; } } for (i=1;i<=n;i++) t[i]=b[i]/a[i][i]; k=0; printf("%d ",k); for (i=1;i<=n;i++) { x[i][k]=t[i]; printf(" x[%d][%d]=%5.5f",i,k,x[i][k]);} do { putchar('\n'); k++; printf("%d ",k); for (i=1;i<=n;i++) {h=1; s=0; for (j=1;j<=n;j++) {if (i==j) continue; s+=(l[i][h]*x[j][k-1]); h++; } x[i][k]=t[i]+s; x1[i]=x[i][k]; printf(" x[%d][%d]=%5.5f",i,k,x[i][k]); } for (i=1;i<=n;i++) {if (fabs(x[i][k]-x[i][k-1])<e) {p=1; continue;} else { p=0; break;}} } while (p!=1); for (i=1;i<=n;i++) {for (j=1;j<=n;j++) s+=(a[i][j]*x1[j]); printf("\n%f\n",s); s=0;}} Результати обчислень. 0 x[1][0]=1.24907 x[2][0]=1.30041 x[3][0]=1.49060 1 x[1][1]=0.88204 x[2][1]=1.13684 x[3][1]=1.11966 2 x[1][2]=0.95738 x[2][2]=1.18166 x[3][2]=1.19183 3 x[1][3]=0.94142 x[2][3]=1.17265 x[3][3]=1.17512 4 x[1][4]=0.94498 x[2][4]=1.17463 x[3][4]=1.17858 5 x[1][5]=0.94423 x[2][5]=1.17420 x[3][5]=1.17781 6 x[1][6]=0.94440 x[2][6]=1.17429 x[3][6]=1.17798 7 x[1][7]=0.94436 x[2][7]=1.17428 x[3][7]=1.17794 8 x[1][8]=0.94437 x[2][8]=1.17428 x[3][8]=1.17795 9 x[1][9]=0.94437 x[2][9]=1.17428 x[3][9]=1.17795 10 x[1][10]=0.94437 x[2][10]=1.17428 x[3][10]=1.17795 Перевірка: 30.247349 40.950005 42.810001 Висновок: Розв’язання систем лінійних алгебраїчних рівнянь методом простої ітерації або методом Зейделя можна досить легко реалізувати на ЕОМ за допомогою програми в середовищі Сі. Основна відмінність методу Зейделя полягає в тому, що при обчисленні кожного наступного наближення невідомого аргументу враховуються вже знайдені раніше невідомі поточного наближення. Розв’язання таких систем на ЕОМ є дуже актуальним, оскільки цей процес є набагато легшим та короткотривалішим ніж розв’язання систем лінійних алгебраїчних рівнянь вручну.
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини